package disenioPantallas.fichaAnimal;

import java.awt.Dimension;
import java.awt.Label;

import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.BoxLayout;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import java.awt.Font;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.border.TitledBorder;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;

import disenioPantallas.elementos.EButton;
import disenioPantallas.elementos.ELabel;
import disenioPantallas.elementos.EPanel;
import disenioPantallas.elementos.ETextField;
import disenioPantallas.elementos.FrameAutenticado;
import disenioPantallas.elementos.panelGeneral;
import entidades.Animal;
import gestores.GestorAnimal;
import gestores.GestorErrores;
import gestores.GestorSistema;
import java.util.Date;
import java.util.Calendar;
import javax.swing.JCheckBox;
import javax.swing.SwingConstants;
import java.awt.FlowLayout;

public class FichaAnimal extends panelGeneral {

	private static final long serialVersionUID = 1L;
	private GestorSistema gSistema= GestorSistema.getGestorSistema();
	private GestorErrores gError= GestorErrores.getGestorErrores();
	private JTextField txCastrado;
	private JTextField txRaza;
	private JTextField txCampo;
	private JTextField txSexo;
	private JTextField txCategoria;
	private GestorAnimal gAnimal=GestorAnimal.getGestorAnimal();
	private Animal animal=gAnimal.getAnimalActual();
	
	public FichaAnimal() {
		
		super();
		setPreferredSize(new Dimension(900, 700));
		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		
		Component verticalStrut_2 = Box.createVerticalStrut(20);
		add(verticalStrut_2);
		
		JPanel panelTitulo = new JPanel();
		panelTitulo.setOpaque(false);
		add(panelTitulo);
		panelTitulo.setLayout(new BoxLayout(panelTitulo, BoxLayout.X_AXIS));
		
		JLabel lbTitulo = new JLabel("Ficha de Animal Nro #99");
		panelTitulo.add(lbTitulo);
		lbTitulo.setFont(new Font("Cambria", Font.PLAIN, 24));
		
		Component verticalStrut_1 = Box.createVerticalStrut(35);
		add(verticalStrut_1);

		
		JPanel panelCentral = new JPanel();
		panelCentral.setOpaque(false);
		add(panelCentral);
		
		panelCentral.setLayout(new BoxLayout(panelCentral, BoxLayout.X_AXIS));
		
		JPanel panelInfo1 = new JPanel();
		panelInfo1.setMaximumSize(new Dimension(400, 600));
		panelCentral.add(panelInfo1);
		panelInfo1.setOpaque(false);
		panelInfo1.setLayout(new BoxLayout(panelInfo1, BoxLayout.Y_AXIS));
		
		EPanel panelEspecie = new EPanel();
		FlowLayout flowLayout = (FlowLayout) panelEspecie.getLayout();
		flowLayout.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelEspecie);
		ELabel lbEspecie= new ELabel("ESPECIE: ");
		panelEspecie.add(lbEspecie);
		
		Component horizontalStrut2 = Box.createHorizontalStrut(20);
		panelEspecie.add(horizontalStrut2);
		
		txCastrado = new ETextField();
		txCastrado.setEnabled(false);
		panelEspecie.add(txCastrado);
		txCastrado.setText(animal.getRaza().getEspecie());
		
		EPanel panelRaza = new EPanel();
		FlowLayout flowLayout_1 = (FlowLayout) panelRaza.getLayout();
		flowLayout_1.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelRaza);
		ELabel lbRaza= new ELabel("RAZA: ");
		panelRaza.add(lbRaza);
		
		Component horizontalStrut3 = Box.createHorizontalStrut(20);
		panelRaza.add(horizontalStrut3);
		
		txRaza = new ETextField();
		txRaza.setEnabled(false);
		panelRaza.add(txRaza);
		txRaza.setText(animal.getRaza().getRaza());
		
		EPanel panelSexo = new EPanel();
		FlowLayout flowLayout_2 = (FlowLayout) panelSexo.getLayout();
		flowLayout_2.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelSexo);
		ELabel lbSexo= new ELabel("SEXO: ");
		panelSexo.add(lbSexo);
		Component horizontalStrut5 = Box.createHorizontalStrut(20);
		panelSexo.add(horizontalStrut5);
		
		txSexo = new ETextField();
		txSexo.setEnabled(false);
		panelSexo.add(txSexo);
		txSexo.setText(animal.getCategoria().getSexo());
		
		EPanel panelCategoria = new EPanel();
		FlowLayout flowLayout_3 = (FlowLayout) panelCategoria.getLayout();
		flowLayout_3.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelCategoria);
		ELabel lbCategoria= new ELabel("CATEGORIA: ");
		panelCategoria.add(lbCategoria);
		Component horizontalStrut6 = Box.createHorizontalStrut(20);
		panelCategoria.add(horizontalStrut6);
		
		txCategoria = new ETextField();
		txCategoria.setEnabled(false);
		panelCategoria.add(txCategoria);
		txCategoria.setText(animal.getCategoria().getCategoria());
		
		EPanel panelCaravana = new EPanel();
		FlowLayout flowLayout_4 = (FlowLayout) panelCaravana.getLayout();
		flowLayout_4.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelCaravana);
		ELabel lbCaravana= new ELabel("CARAVANA: ");
		panelCaravana.add(lbCaravana);
		
		Component horizontalStrut = Box.createHorizontalStrut(20);
		panelCaravana.add(horizontalStrut);
		ETextField txCaravana= new ETextField();
		txCaravana.setEnabled(false);
		panelCaravana.add(txCaravana);
		
															
				EPanel panelCampo = new EPanel();
				FlowLayout fl_panelCampo = (FlowLayout) panelCampo.getLayout();
				fl_panelCampo.setAlignment(FlowLayout.LEFT);
				panelInfo1.add(panelCampo);
				ELabel lbCampo= new ELabel("CAMPO:");
				panelCampo.add(lbCampo);
				
				Component horizontalStrut4 = Box.createHorizontalStrut(20);
				panelCampo.add(horizontalStrut4);
				
				txCampo = new ETextField();
				txCampo.setEnabled(false);
				panelCampo.add(txCampo);
				txCampo.setText(animal.getPotreroActual().getCampoPerteneciente().getNombreCampo());
		
		EPanel panelPotrero = new EPanel();
		FlowLayout flowLayout_5 = (FlowLayout) panelPotrero.getLayout();
		flowLayout_5.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelPotrero);
		
		ELabel lbPotrero = new ELabel("POTRERO:");
		panelPotrero.add(lbPotrero);
		
		Component horizontalStrut_1 = Box.createHorizontalStrut(20);
		panelPotrero.add(horizontalStrut_1);
		
		ETextField txPotrero = new ETextField();
		txPotrero.setEnabled(false);
		panelPotrero.add(txPotrero);
		txPotrero.setText(animal.getPotreroActual().getNombrePotrero());
				
		EPanel panelNombre = new EPanel();
		FlowLayout flowLayout_6 = (FlowLayout) panelNombre.getLayout();
		flowLayout_6.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelNombre);
		ELabel lbNombre= new ELabel("NOMBRE: ");
		panelNombre.add(lbNombre);
		Component horizontalStrut7 = Box.createHorizontalStrut(20);
		panelNombre.add(horizontalStrut7);
		ETextField txNombre= new ETextField();
		txNombre.setEnabled(false);
		panelNombre.add(txNombre);
		txNombre.setText(animal.getNombre());
		
		EPanel panelNacimiento = new EPanel();
		FlowLayout flowLayout_7 = (FlowLayout) panelNacimiento.getLayout();
		flowLayout_7.setAlignment(FlowLayout.LEFT);
		panelInfo1.add(panelNacimiento);
		ELabel lbNacimiento= new ELabel("NACIMIENTO: ");
		panelNacimiento.add(lbNacimiento);
		Component horizontalStrut8 = Box.createHorizontalStrut(20);
		panelNacimiento.add(horizontalStrut8);
		
		JSpinner spinner = new JSpinner();
		spinner.setEnabled(false);
		spinner.setFont(new Font("Cambria", Font.PLAIN, 16));
		spinner.setModel(new SpinnerDateModel(new Date(1357268400000L), new Date(-2208973392000L), null, Calendar.DAY_OF_YEAR));
		spinner.setPreferredSize(new Dimension(150, 35));
		panelNacimiento.add(spinner);
		
						
				EPanel panelMadre = new EPanel();
				FlowLayout flowLayout_8 = (FlowLayout) panelMadre.getLayout();
				flowLayout_8.setAlignment(FlowLayout.LEFT);
				panelInfo1.add(panelMadre);			
				ELabel lbMadre= new ELabel("MADRE: ");
				panelMadre.add(lbMadre);
				Component horizontalStrut9 = Box.createHorizontalStrut(20);
				panelMadre.add(horizontalStrut9);
				ETextField txMadre= new ETextField();
				txMadre.setEnabled(false);
				panelMadre.add(txMadre);
				txMadre.setText(""+animal.getIdMadre());
				
				Component horizontalStrut_10 = Box.createHorizontalStrut(35);
				panelMadre.add(horizontalStrut_10);
				
				EPanel panelPadre = new EPanel();
				FlowLayout flowLayout_9 = (FlowLayout) panelPadre.getLayout();
				flowLayout_9.setAlignment(FlowLayout.LEFT);
				panelInfo1.add(panelPadre);
				ELabel lbPadre= new ELabel("PADRE: ");
				panelPadre.add(lbPadre);
				Component horizontalStrut10 = Box.createHorizontalStrut(20);
				panelPadre.add(horizontalStrut10);
				ETextField txPadre= new ETextField();
				txPadre.setEnabled(false);
				panelPadre.add(txPadre);
				txPadre.setText(""+animal.getIdPadre());
				
				Component horizontalStrut_11 = Box.createHorizontalStrut(35);
				panelPadre.add(horizontalStrut_11);
						
						Component verticalGlue = Box.createVerticalGlue();
						panelInfo1.add(verticalGlue);
				
						JPanel panelInfo2 = new JPanel();
						panelInfo2.setMaximumSize(new Dimension(300, 600));
						panelCentral.add(panelInfo2);
						panelInfo2.setOpaque(false);
						panelInfo2.setLayout(new BoxLayout(panelInfo2, BoxLayout.Y_AXIS));
						
						EPanel panelCastrado = new EPanel();
						panelCastrado.setPreferredSize(new Dimension(200, 45));
						panelCastrado.setMaximumSize(new Dimension(200, 50));
						FlowLayout flowLayout2 = (FlowLayout) panelCastrado.getLayout();
						flowLayout2.setAlignment(FlowLayout.LEFT);
						panelInfo2.add(panelCastrado);
						ELabel lbCastrado= new ELabel("CASTRADO: ");
						lbCastrado.setHorizontalAlignment(SwingConstants.LEFT);
						panelCastrado.add(lbCastrado);
						
						Component horizontalStrut_12 = Box.createHorizontalStrut(10);
						panelCastrado.add(horizontalStrut_12);
						
						JCheckBox chkCastrado = new JCheckBox("");
						chkCastrado.setEnabled(false);
						panelCastrado.add(chkCastrado);
						chkCastrado.setSelected(animal.isCastrado());
					
						
						EPanel panelDescornado = new EPanel();
						panelDescornado.setPreferredSize(new Dimension(200, 45));
						panelDescornado.setMaximumSize(new Dimension(200, 50));
						FlowLayout flowLayout_11 = (FlowLayout) panelDescornado.getLayout();
						flowLayout_11.setAlignment(FlowLayout.LEFT);
						panelInfo2.add(panelDescornado);
						ELabel lbDescornado= new ELabel("DESCORNADO: ");
						lbDescornado.setHorizontalAlignment(SwingConstants.LEFT);
						panelDescornado.add(lbDescornado);
						
						Component horizontalStrut_13 = Box.createHorizontalStrut(10);
						panelDescornado.add(horizontalStrut_13);
						
						JCheckBox chkDescornado = new JCheckBox("");
						chkDescornado.setEnabled(false);
						panelDescornado.add(chkDescornado);
						chkDescornado.setSelected(animal.isDescornado());
						
						EPanel panel_3 = new EPanel();
						panel_3.setPreferredSize(new Dimension(200, 45));
						panel_3.setMaximumSize(new Dimension(200, 50));
						panelInfo2.add(panel_3);
						
						String peso=String.format("ULTIMO PESO: %d kg", animal.getPesoActual());
						ELabel lbPeso = new ELabel(peso);
						lbPeso.setPreferredSize(new Dimension(170, 40));
						lbPeso.setHorizontalAlignment(SwingConstants.LEFT);
						panel_3.add(lbPeso);
						
						EPanel panel_4 = new EPanel();
						panel_4.setPreferredSize(new Dimension(200, 45));
						panel_4.setMaximumSize(new Dimension(200, 50));
						panelInfo2.add(panel_4);
						
						ELabel lbEstado = new ELabel("ESTADO:");
						lbEstado.setPreferredSize(new Dimension(170, 40));
						lbEstado.setHorizontalAlignment(SwingConstants.LEFT);
						panel_4.add(lbEstado);
						
						Component verticalGlue_4 = Box.createVerticalGlue();
						panelInfo2.add(verticalGlue_4);
						
						

						
						
						JPanel panelImagen = new JPanel();
						panelCentral.add(panelImagen);
						panelImagen.setPreferredSize(new Dimension(250, 300));
						panelImagen.setMaximumSize(new Dimension(250, 800));
						panelImagen.setOpaque(false);
						panelImagen.setLayout(new BoxLayout(panelImagen, BoxLayout.Y_AXIS));
						
						JPanel panelAspecto = new JPanel();
						panelAspecto.setOpaque(false);
						panelImagen.add(panelAspecto);
						panelAspecto.setLayout(new BoxLayout(panelAspecto, BoxLayout.X_AXIS));
						
							
						JScrollPane scrollPane = new JScrollPane();
						scrollPane.setPreferredSize(new Dimension(300, 100));
						scrollPane.setBorder(new TitledBorder(null, "Aspecto", TitledBorder.LEADING, TitledBorder.TOP, null, null));
						panelAspecto.add(scrollPane);
						
						JEditorPane txAspecto = new JEditorPane();
						txAspecto.setEnabled(false);
						scrollPane.setViewportView(txAspecto);
						
								JPanel panelFoto = new JPanel();
								panelFoto.setOpaque(false);
								panelImagen.add(panelFoto);
								
								JPanel panelImage = new JPanel();
								panelImage.setOpaque(false);
								panelImage.setBorder(javax.swing.BorderFactory.createTitledBorder("Nombre"));		
								JTextField txtDireccionImagen = new ETextField();
								txtDireccionImagen.setText("imagen.jpg");
								txtDireccionImagen.setEnabled(false);
								ImageIcon icon = createImageIcon("/imagenes/TOROO.jpg",txtDireccionImagen);
								
										JLabel lbAnimal= new JLabel(icon);
										lbAnimal.setPreferredSize(new Dimension(190, 190));
										panelImage.add(lbAnimal);
										panelFoto.add(panelImage);
										
										JPanel panel = new JPanel();
										panel.setOpaque(false);
										panelFoto.add(panel);
										panel.add(txtDireccionImagen);
										
												
										
												JButton btnExaminar = new JButton("Examinar");
												btnExaminar.setEnabled(false);
												btnExaminar.setFont(new Font("Cambria", Font.PLAIN, 16));
												panel.add(btnExaminar);
												
												Component verticalGlue_1 = Box.createVerticalGlue();
												panelImagen.add(verticalGlue_1);
												
												JPanel panelBotones = new JPanel();
												panelCentral.add(panelBotones);
												panelBotones.setOpaque(false);
												panelBotones.setMaximumSize(new Dimension(200, 32767));
												panelBotones.setLayout(new BoxLayout(panelBotones, BoxLayout.PAGE_AXIS));
												
												Component verticalStrut = Box.createVerticalStrut(50);
												panelBotones.add(verticalStrut);
												
												JPanel panelbtnCaravana = new EPanel();
												panelbtnCaravana.setMaximumSize(new Dimension(150, 50));
												panelBotones.add(panelbtnCaravana);
												
												JButton btnCambiarCaravana = new EButton("CARAVANA");
												panelbtnCaravana.add(btnCambiarCaravana);
												btnCambiarCaravana.addActionListener(new caravanaAction());
												
												JPanel panelbtnEstado = new EPanel();
												panelbtnEstado.setMaximumSize(new Dimension(150, 50));
												panelBotones.add(panelbtnEstado);
												
												JButton btnCambiarEstado = new EButton("ESTADO");
												panelbtnEstado.add(btnCambiarEstado);
												btnCambiarEstado.addActionListener(new EstadoAction());
												
												
												JPanel panelbtnEditar = new EPanel();
												panelbtnEditar.setMaximumSize(new Dimension(150, 50));
												panelBotones.add(panelbtnEditar);
												
												JButton btnEditar = new EButton("EDITAR");
												panelbtnEditar.add(btnEditar);
												
												EPanel panel_1 = new EPanel();
												panel_1.setMaximumSize(new Dimension(150, 50));
												panelBotones.add(panel_1);
												
												EButton btnVacunas = new EButton("VACUNAS");
												panel_1.add(btnVacunas);
												
												EPanel panel_2 = new EPanel();
												panel_2.setMaximumSize(new Dimension(150, 50));
												panelBotones.add(panel_2);
												
												EButton btnPeso = new EButton("PESOS");
												panel_2.add(btnPeso);
												btnPeso.addActionListener(new PesoAction());
												
												Component verticalGlue_2 = Box.createVerticalGlue();
												panelBotones.add(verticalGlue_2);
												
												Component verticalGlue_3 = Box.createVerticalGlue();
												add(verticalGlue_3);
												
												EPanel panelAtras = new EPanel();
												panelAtras.setPreferredSize(new Dimension(160, 60));
												panelAtras.setMaximumSize(new Dimension(32767, 60));
												add(panelAtras);
												panelAtras.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
												
												EButton btnAtras = new EButton("ATRAS");
												panelAtras.add(btnAtras);
												btnAtras.addActionListener(new ActionListener() {
													
													@Override
													public void actionPerformed(ActionEvent e) {
														((FrameAutenticado) gSistema.getFrame()).quitarCU();
														
													}
												});

		
		
		
		
		
	}
	
	private class caravanaAction extends AbstractAction{

		private static final long serialVersionUID = 1L;

		public void actionPerformed(ActionEvent arg0) {
			DCaravanasAnimal dialog=new DCaravanasAnimal();
			dialog.activarDG();
			
			
			
		}
		
	}
	
	
	
    protected static ImageIcon createImageIcon(String path,JTextField lb) {
    	java.net.URL imgURL = Label.class.getResource(path);
   		if (imgURL != null) {
   			lb.setText(path);
   			return new ImageIcon(imgURL);
   		} else {
   			System.err.println("Couldn't find file: " + path);
   			return null;
   		}
}
    private class EstadoAction extends AbstractAction{
    	
		private static final long serialVersionUID = 1L;

		public void actionPerformed(ActionEvent arg0) {
			DEstado dialog=new DEstado();
			dialog.activarDG();
			if(dialog.idEstado!=-1){
				try {
					gAnimal.setEstado(animal.getIdAnimal(),dialog.idEstado);
					gError.mostrarCartelAdvertencia("Se ha registrado Correctamente");

				} catch (Throwable e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					gError.mostrarCartelError(e.getMessage());
				}
			}
			
			
			
		}
    	
    	
    }
    
    private class PesoAction extends AbstractAction{

		public void actionPerformed(ActionEvent e) {
			DPesosAnimal dialog=new DPesosAnimal();
			dialog.activarDG();
			
		}
    	
    }



	@Override
	public void cargarCampos() {
		// TODO Auto-generated method stub
		
	}
    
 
}
